<?php

function ordUTF8($c)
{
    $h = ord($c[0]);
    if ($h <= 0x7F) {
        return $h;
    } else if ($h < 0xC2)
        return false;
    else if ($h <= 0xDF)
        return ($h & 0x1F) <<  6 | (ord($c[1]) & 0x3F);
    else if ($h <= 0xEF)
        return ($h & 0x0F) << 12 | (ord($c[1]) & 0x3F) << 6 | (ord($c[2]) & 0x3F);
    else if ($h <= 0xF4)
        return ($h & 0x0F) << 18 | (ord($c[1]) & 0x3F) << 12 | (ord($c[2]) & 0x3F) << 6 | (ord($c[3]) & 0x3F);
    return false;
}

function chrUTF8($dec) {
  if ($dec < 128) {
    $utf = chr($dec);
  } else if ($dec < 2048) {
    $utf = chr(192 + (($dec - ($dec % 64)) / 64)).chr(128 + ($dec % 64));
  } else {
    $utf = chr(224 + (($dec - ($dec % 4096)) / 4096)).chr(128 + ((($dec % 4096) - ($dec % 64)) / 64)).chr(128 + ($dec % 64));
  }
  return $utf;
}

class FileUtils_View_Helper extends Zend_View_Helper_Abstract
{
    public function registerHelper($view)
    {
        $view->registerHelper($this, 'formatURL');
        $view->registerHelper($this, 'formatHTML');
        $view->registerHelper($this, 'formatSize');
        $view->registerHelper($this, 'showMatches');
        $view->registerHelper($this, 'format');
        $view->registerHelper($this, 'coalesce');
    }

    public function coalesce()
    {
        $args = func_get_args();
        foreach ($args as $arg) {
            if (isset($arg)) return $arg;
        }
        return "";
    }

    public function formatURL($url)
    {
        return rawurlencode($url);
    }

    public function formatHTML($html)
    {
        return htmlentities($html, ENT_QUOTES, "UTF-8");
    }

    public function showMatches($text, $words, &$found = null)
    {
        $search = $this->clearCharset($text);
        $textlen = strlen($text);
        $matches = array_fill(0, $textlen+1, 0);
        foreach ($words as $w=>$hits)
        {
            $len = strlen($w);
            if ($w[0]=='"') $w = substr($w, 1, -1);
            if ($w[$len-1]=="*") {
                $end = ""; $len--;
                $w = substr($w, 0, $len);
            }
            else $end = "(?:\b|\W|_)";

            if ($w!='') {
                $offset = 0;
                while (preg_match("/(?:\b|\W|_)(".preg_quote($w).")$end/iu", $search, $m, PREG_OFFSET_CAPTURE, $offset)==1) {
                    $matches[$m[1][1]] = 1;
                    $offset = $m[1][1]+$len;
                    $matches[$offset] = -1;
                }
            }
        }
        $last = 0; $open = false; $ret = "";
        for ($j=$i=0; $i<=$textlen; $i++) {
            if (!$open && $matches[$i]==1) {
                $ret .= substr($text, $last, $j-$last);
                $open = true;
                $last = $j;
            }
            elseif ($open && $matches[$i]==-1) {
                $ret .= "<em>".substr($text, $last, $j-$last)."</em>";
                $open = false;
                $last = $j;
            }
            $j += 1+strlen(mb_substr($text, $i, 1, "UTF-8"))-strlen(mb_substr($search, $i, 1, "UTF-8"));
        }

        $ret .= substr($text, $last);

        $found = $found>0;
        return $ret;
    }

    function formatSize($bytes)
    {
        $size = $bytes / 1024;
        if ($size < 1024)
        {
            $size = number_format($size, 2);
            $size .= '&nbsp;KB';
        }
        else
        {
            if ($size / 1024 < 1024)
            {
                $size = number_format($size / 1024, 2);
                $size .= '&nbsp;MB';
            }
            else if ($size / 1024 / 1024 < 1024)
            {
                $size = number_format($size / 1024 / 1024, 2);
                $size .= '&nbsp;GB';
            }
        }
        return $size;
    }
    
    function formatLength($text)
    {
    $secs = (int)$text;
    $mins = 0;
    if ($secs>59) {
        $mins = $secs/60;
        $secs = $secs%60;
        if ($mins>59) {
            $hours = $mins/60;
            $mins = $mins%60;
        }
    }
    if (isset($hours))
        return sprintf("%d:%02d:%02d", $hours, $mins, $secs);
    else
        return sprintf("%d:%02d", $mins, $secs);
    }

    function format($obj, $details=false)
    {
        $res = "";

        $md = $obj['file']['md'];
        
        if ($details) {
            $start = "<tr><td>";
            $middle = ":</td><td>";
            $end = "</td></tr>";
        } else {
            $start = "";
            $middle = ":&nbsp;";
            $end = ". ";
        }

        $type=null;
        if (isset($obj['view']['type'])) $type = $obj['view']['type'];
        switch ($type)
        {
            case "Audio":
               $res = $this->formatAudio($obj, $md, $details, $start, $middle, $end);
               break;
            case "Archive":
               $res = $this->formatArchive($obj, $md, $details, $start, $middle, $end);
               break;
            case "Document":
               $res = $this->formatDocument($obj, $md, $details, $start, $middle, $end);
               break;
            case "Image":
               $res = $this->formatImage($obj, $md, $details, $start, $middle, $end);
               break;
            case "Software":
               $res = $this->formatSoftware($obj, $md, $details, $start, $middle, $end);
               break;
            case "Video":
               $res = $this->formatVideo($obj, $md, $details, $start, $middle, $end);
               break;
            default:
               $res = "";
               break;
        }

        $element = $details?"table":"span";

        if ($details && $res=='')
        {
            if (isset($obj['view']['nfn'])) $res = $start.$this->view->translate("Name").$middle.$this->searchable($details, $obj['view']['nfn']).$end;
            $desc = strtolower($type).":description";
            if (isset($md[$desc])) $res .= $start.$this->view->translate("Description").$middle.$this->searchable($details, $md[$desc]).$end;
        }
        if ($res!='') $res = "<$element>$res</$element>";

        $extra="";
        if ($details && $obj['view']['fnx']=="torrent")
        {
            if ($files = $this->getValue($md,"torrent:filepaths")) {
                $names = explode("//", $files);

                $sizes = $this->getValue($md,"torrent:filesizes");
                if ($sizes) $sizes = explode(" ", $sizes);

                for ($i=0; $i<count($names); $i++)
                {
                    if ($sizes[$i]) $size = " (".$this->formatSize($sizes[$i]).")"; else $size = "";
                    $extra .= "<li>{$names[$i]}$size</li>";
                }
                $extra = "<div class='download_file_torrent_files'>Torrent&nbsp;files: <ul>$extra</ul></div>";
            }
        }
        return $res.$extra;
    }

    function searchable($details, $text)
    {
        $text = strip_tags($text);
        if ($details)
            return "<a href='/{$this->view->lang}/search/?q=".urlencode($text)."'>".$text."</a>";
        else
            return $text; // htmlentities($text, ENT_QUOTES, "UTF-8");
    }

    function formatAudio($obj, $md, $details, $start, $middle, $end)
    {
        $res = '';
        if ($artist = $this->getValue($md,"audio:artist")) $res .= $start.$this->view->translate("Artist").$middle.$this->searchable($details, $artist).$end;
        if ($title = $this->getValue($md,"audio:title")) $res .= $start.$this->view->translate("Title").$middle.$this->searchable($details, $title).$end;

        if ($album = $this->getValue($md,"audio:album")) {
            $res .= $start.$this->view->translate("Album").$middle.$this->searchable($details, $album);
            if (($year = $this->getValue($md,"audio:year")) && is_numeric($year) && $year>1901 && $year<2100)
                $res .= "&nbsp;($year)";
            $res .= $end;
        }
        if ($details && ($track = $this->getValue($md,"audio:track"))) $res .= $start.$this->view->translate("Track").$middle.$track.$end;
        if ($genre = $this->getValue($md,"audio:genre")) $res .= $start.$this->view->translate("Genre").$middle.$genre.$end;
        if ($len = $this->getValue($md,"audio:seconds")) $res .= $start.$this->view->translate("Length").$middle.$this->formatLength($len).$end;
        if ($bitrate = $this->getValue($md,"audio:bitrate")) {
            $bitrate = str_replace("~", "", $bitrate);
            $bitrate .= "&nbsp;kbit/s";
            if ($details &&  ($st = $this->getValue($md,"audio:soundtype"))) $bitrate .= " - ".$st;
            $res .= $start.$this->view->translate("Quality").$middle.$bitrate.$end;
        }
        return $res;
    }

    function formatDocument($obj, $md, $details, $start, $middle, $end)
    {
        $res = '';
        if ($title =  $this->getValue($md,"book:title","document:title")) $res .= $start.$this->view->translate("Title").$middle.$this->searchable($details, $title).$end;
        if ($author =  $this->getValue($md,"book:author", "document:author")) $res .= $start.$this->view->translate("Author").$middle.$this->searchable($details, $author).$end;
        if ($pages =  $this->getValue($md,"document:pages")) $res .= $start.$this->view->translate("Num. of pages").$middle.$pages.$end;

        if ($details)
        {
            if ($format = $this->getValue($md,"document:format")) {
                $res .= $start.$this->view->translate("Format").$middle.$format;
                if ($fversion = $this->getValue($md,"document:formatversion")) $res .= "&nbsp;v.$fversion";
                $res .= $end;
            }
            if ($version = $this->getValue($md,"document:version")) {
                $version = (int)$version;
                $res .= $start.$this->view->translate("Version").$middle.$version;
                if ($revision = $this->getValue($md,"document:revision")) $res .= "&nbsp;$revision";
                $res .= $end;
            }
        }

        return $res;
    }

    function formatImage($obj, $md, $details, $start, $middle, $end)
    {
        $res = '';
        if ($title = $this->getValue($md,"image:title")) $res .= $start.$this->view->translate("Title").$middle.$this->searchable($details, $title).$end;
        if ($artist = $this->getValue($md,"image:artist")) $res .= $start.$this->view->translate("Artist").$middle.$this->searchable($details, $artist).$end;

        if ($details)
        {
            if ($desc = $this->getValue($md,"image:description")) $res .= $start.$this->view->translate("Description").$middle.$desc.$end;
        }
        if (($width = $this->getValue($md,"image:width")) && ($height = $this->getValue($md,"image:height")))
            $res .= $start.$this->view->translate("Size").$middle.$width."x".$height.$end;
        if ($colors = $this->getValue($md,"image:colors"))
            $res .= $start.$this->view->translate("Colors").$middle.$colors.$end;

        return $res;
    }

    function formatVideo($obj, $md, $details, $start, $middle, $end)
    {
        $res = '';
        if ($title = $this->getValue($md,"video:title")) $res .= $start.$this->view->translate("Title").$middle.$this->searchable($details, $title).$end;
        if ($artist = $this->getValue($md,"video:artist")) $res .= $start.$this->view->translate("Artist").$middle.$this->searchable($details, $artist).$end;

        if ($len = $this->getValue($md,"video:minutes", "video:length", "video:duration"))
        {
            if (isset($md["video:minutes"])) $len *= 60;
            $res .= $start.$this->view->translate("Length").$middle.$this->formatLength($len).$end;
        }
        if (($width = $this->getValue($md,"video:width")) && ($height = $this->getValue($md,"video:height")))
            $res .= $start.$this->view->translate("Size").$middle.$width."x".$height.$end;

        if ($details) {
            if ($desc = $this->getValue($md,"video:description")) $res .= $start.$this->view->translate("Description").$middle.$desc.$end;
            if ($fps = $this->getValue($md,"video:framerate")) {
                $fps=(int)$fps;
                 $res .= $start.$this->view->translate("Quality").$middle.$fps." fps";
                 if ($codec = $this->getValue($md, "video:codec")) $res .= ' '.htmlentities($codec, ENT_QUOTES, "UTF-8");
                 $res .= $end;
            }
        }
        return $res;
    }

    function formatSoftware($obj, $md, $details, $start, $middle, $end)
    {
        $res = '';
        if ($title = $this->getValue($md,"application:title")) {
            $res .= $start.$this->view->translate("Title").$middle.$this->searchable($details, $title);
            if ($version = $this->getValue($md,"application:version")) $res .= "&nbsp;$version";
             $res .= $end;
        }
         
        if ($details) {
            if ($fversion = $this->getValue($md,"application:fileversion"))
                $res .= $start.$this->view->translate("Version").$middle.$fversion.$end;

            if ($os = $this->getValue($md,"application:os"))
                $res .= $start.$this->view->translate("OS").$middle.$os.$end;
        }
        return $res;
    }
     

    function formatArchive($obj, $md, $details, $start, $middle, $end)
    {
        $res = '';

        if ($title = $this->getValue($md,"archive:title","archive:name"))
            $res .= $start.$this->view->translate("Title").$middle.$this->searchable($details, $title).$end;

        if ($files = $this->getValue($md,"archive:files"))
            $res .= $start.$this->view->translate("Files").$middle.$files.$end;

        if ($details) {
            if ($folders = $this->getValue($md,"archive:folders"))
                $res .= $start.$this->view->translate("Folders").$middle.$folders.$end;
            if ($usize = $this->getValue($md,"archive:unpackedsize"))
                $res .= $start.$this->view->translate("Unpacked size").$middle.$this->formatSize($usize).$end;
        }
        return $res;
    }

    function getValue($md, $key1, $key2=null, $key3=null)
    {
        if (isset($md[$key1]))
            return $md[$key1];
        else if ($key2 && isset($md[$key2]))
            return $md[$key2];
        else if ($key3 && isset($md[$key3]))
            return $md[$key3];
        else
            return null;
    }

    function clearCharset($text)
    {
        if (!isset($this->repl))
        {
            $this->repl = array(0x00C0=>"a", 0x00C1=>"a", 0x00C2=>"a", 0x00C3=>"a", 0x00C4=>"a", 0x00C5=>"a", 0x00E0=>"a", 0x00E1=>"a", 0x00E2=>"a", 0x00E3=>"a", 0x00E4=>"a", 0x00E5=>"a", 0x0100=>"a", 0x0101=>"a", 0x0102=>"a", 0x0103=>"a", 0x010300=>"a", 0x0104=>"a", 0x0105=>"a", 0x01CD=>"a", 0x01CE=>"a", 0x01DE=>"a", 0x01DF=>"a", 0x01E0=>"a", 0x01E1=>"a", 0x01FA=>"a", 0x01FB=>"a", 0x0200=>"a", 0x0201=>"a", 0x0202=>"a", 0x0203=>"a", 0x0226=>"a", 0x0227=>"a", 0x023A=>"a", 0x0250=>"a", 0x04D0=>"a", 0x04D1=>"a", 0x1D2C=>"a", 0x1D43=>"a", 0x1D44=>"a", 0x1D8F=>"a", 0x1E00=>"a", 0x1E01=>"a", 0x1E9A=>"a", 0x1EA0=>"a", 0x1EA1=>"a", 0x1EA2=>"a", 0x1EA3=>"a", 0x1EA4=>"a", 0x1EA5=>"a", 0x1EA6=>"a", 0x1EA7=>"a", 0x1EA8=>"a", 0x1EA9=>"a", 0x1EAA=>"a", 0x1EAB=>"a", 0x1EAC=>"a", 0x1EAD=>"a", 0x1EAE=>"a", 0x1EAF=>"a", 0x1EB0=>"a", 0x1EB1=>"a", 0x1EB2=>"a", 0x1EB3=>"a", 0x1EB4=>"a", 0x1EB5=>"a", 0x1EB6=>"a", 0x1EB7=>"a", 0x2090=>"a", 0x2C65=>"a", 0x0180=>"b", 0x0181=>"b", 0x0182=>"b", 0x0183=>"b", 0x0243=>"b", 0x0253=>"b", 0x0299=>"b", 0x16D2=>"b", 0x1D03=>"b", 0x1D2E=>"b", 0x1D2F=>"b", 0x1D47=>"b", 0x1D6C=>"b", 0x1D80=>"b", 0x1E02=>"b", 0x1E03=>"b", 0x1E04=>"b", 0x1E05=>"b", 0x1E06=>"b", 0x1E07=>"b", 0x00C7=>"c", 0x00E7=>"c", 0x0106=>"c", 0x0107=>"c", 0x0108=>"c", 0x0109=>"c", 0x010A=>"c", 0x010B=>"c", 0x010C=>"c", 0x010D=>"c", 0x0187=>"c", 0x0188=>"c", 0x023B=>"c", 0x023C=>"c", 0x0255=>"c", 0x0297=>"c", 0x1D9C=>"c", 0x1D9D=>"c", 0x1E08=>"c", 0x1E09=>"c", 0x212D=>"c", 0x2184=>"c", 0x010E=>"d", 0x010F=>"d", 0x0110=>"d", 0x0111=>"d", 0x0189=>"d", 0x018A=>"d", 0x018B=>"d", 0x018C=>"d", 0x01C5=>"d", 0x01F2=>"d", 0x0221=>"d", 0x0256=>"d", 0x0257=>"d", 0x1D05=>"d", 0x1D30=>"d", 0x1D48=>"d", 0x1D6D=>"d", 0x1D81=>"d", 0x1D91=>"d", 0x1E0A=>"d", 0x1E0B=>"d", 0x1E0C=>"d", 0x1E0D=>"d", 0x1E0E=>"d", 0x1E0F=>"d", 0x1E10=>"d", 0x1E11=>"d", 0x1E12=>"d", 0x1E13=>"d", 0x00C8=>"e", 0x00C9=>"e", 0x00CA=>"e", 0x00CB=>"e", 0x00E8=>"e", 0x00E9=>"e", 0x00EA=>"e", 0x00EB=>"e", 0x0112=>"e", 0x0113=>"e", 0x0114=>"e", 0x0115=>"e", 0x0116=>"e", 0x0117=>"e", 0x0118=>"e", 0x0119=>"e", 0x011A=>"e", 0x011B=>"e", 0x018E=>"e", 0x0190=>"e", 0x01DD=>"e", 0x0204=>"e", 0x0205=>"e", 0x0206=>"e", 0x0207=>"e", 0x0228=>"e", 0x0229=>"e", 0x0246=>"e", 0x0247=>"e", 0x0258=>"e", 0x025B=>"e", 0x025C=>"e", 0x025D=>"e", 0x025E=>"e", 0x029A=>"e", 0x1D07=>"e", 0x1D08=>"e", 0x1D31=>"e", 0x1D32=>"e", 0x1D49=>"e", 0x1D4B=>"e", 0x1D4C=>"e", 0x1D92=>"e", 0x1D93=>"e", 0x1D94=>"e", 0x1D9F=>"e", 0x1E14=>"e", 0x1E15=>"e", 0x1E16=>"e", 0x1E17=>"e", 0x1E18=>"e", 0x1E19=>"e", 0x1E1A=>"e", 0x1E1B=>"e", 0x1E1C=>"e", 0x1E1D=>"e", 0x1EB8=>"e", 0x1EB9=>"e", 0x1EBA=>"e", 0x1EBB=>"e", 0x1EBC=>"e", 0x1EBD=>"e", 0x1EBE=>"e", 0x1EBF=>"e", 0x1EC0=>"e", 0x1EC1=>"e", 0x1EC2=>"e", 0x1EC3=>"e", 0x1EC4=>"e", 0x1EC5=>"e", 0x1EC6=>"e", 0x1EC7=>"e", 0x2091=>"e", 0x0191=>"f", 0x0192=>"f", 0x1D6E=>"f", 0x1D82=>"f", 0x1DA0=>"f", 0x1E1E=>"f", 0x1E1F=>"f", 0x011C=>"g", 0x011D=>"g", 0x011E=>"g", 0x011F=>"g", 0x0120=>"g", 0x0121=>"g", 0x0122=>"g", 0x0123=>"g", 0x0193=>"g", 0x01E4=>"g", 0x01E5=>"g", 0x01E6=>"g", 0x01E7=>"g", 0x01F4=>"g", 0x01F5=>"g", 0x0260=>"g", 0x0261=>"g", 0x0262=>"g", 0x029B=>"g", 0x1D33=>"g", 0x1D4D=>"g", 0x1D77=>"g", 0x1D79=>"g", 0x1D83=>"g", 0x1DA2=>"g", 0x1E20=>"g", 0x1E21=>"g", 0x0124=>"h", 0x0125=>"h", 0x0126=>"h", 0x0127=>"h", 0x021E=>"h", 0x021F=>"h", 0x0265=>"h", 0x0266=>"h", 0x029C=>"h", 0x02AE=>"h", 0x02AF=>"h", 0x02B0=>"h", 0x02B1=>"h", 0x1D34=>"h", 0x1DA3=>"h", 0x1E22=>"h", 0x1E23=>"h", 0x1E24=>"h", 0x1E25=>"h", 0x1E26=>"h", 0x1E27=>"h", 0x1E28=>"h", 0x1E29=>"h", 0x1E2A=>"h", 0x1E2B=>"h", 0x1E96=>"h", 0x210C=>"h", 0x2C67=>"h", 0x2C68=>"h", 0x2C75=>"h", 0x2C76=>"h", 0x00CC=>"i", 0x00CD=>"i", 0x00CE=>"i", 0x00CF=>"i", 0x00EC=>"i", 0x00ED=>"i", 0x00EE=>"i", 0x00EF=>"i", 0x010309=>"i", 0x0128=>"i", 0x0129=>"i", 0x012A=>"i", 0x012B=>"i", 0x012C=>"i", 0x012D=>"i", 0x012E=>"i", 0x012F=>"i", 0x0130=>"i", 0x0131=>"i", 0x0197=>"i", 0x01CF=>"i", 0x01D0=>"i", 0x0208=>"i", 0x0209=>"i", 0x020A=>"i", 0x020B=>"i", 0x0268=>"i", 0x026A=>"i", 0x040D=>"i", 0x0418=>"i", 0x0419=>"i", 0x0438=>"i", 0x0439=>"i", 0x0456=>"i", 0x1D09=>"i", 0x1D35=>"i", 0x1D4E=>"i", 0x1D62=>"i", 0x1D7B=>"i", 0x1D96=>"i", 0x1DA4=>"i", 0x1DA6=>"i", 0x1DA7=>"i", 0x1E2C=>"i", 0x1E2D=>"i", 0x1E2E=>"i", 0x1E2F=>"i", 0x1EC8=>"i", 0x1EC9=>"i", 0x1ECA=>"i", 0x1ECB=>"i", 0x2071=>"i", 0x2111=>"i", 0x0134=>"j", 0x0135=>"j", 0x01C8=>"j", 0x01CB=>"j", 0x01F0=>"j", 0x0237=>"j", 0x0248=>"j", 0x0249=>"j", 0x025F=>"j", 0x0284=>"j", 0x029D=>"j", 0x02B2=>"j", 0x1D0A=>"j", 0x1D36=>"j", 0x1DA1=>"j", 0x1DA8=>"j", 0x0136=>"k", 0x0137=>"k", 0x0198=>"k", 0x0199=>"k", 0x01E8=>"k", 0x01E9=>"k", 0x029E=>"k", 0x1D0B=>"k", 0x1D37=>"k", 0x1D4F=>"k", 0x1D84=>"k", 0x1E30=>"k", 0x1E31=>"k", 0x1E32=>"k", 0x1E33=>"k", 0x1E34=>"k", 0x1E35=>"k", 0x2C69=>"k", 0x2C6A=>"k", 0x0139=>"l", 0x013A=>"l", 0x013B=>"l", 0x013C=>"l", 0x013D=>"l", 0x013E=>"l", 0x013F=>"l", 0x0140=>"l", 0x0141=>"l", 0x0142=>"l", 0x019A=>"l", 0x01C8=>"l", 0x0234=>"l", 0x023D=>"l", 0x026B=>"l", 0x026C=>"l", 0x026D=>"l", 0x029F=>"l", 0x02E1=>"l", 0x1D0C=>"l", 0x1D38=>"l", 0x1D85=>"l", 0x1DA9=>"l", 0x1DAA=>"l", 0x1DAB=>"l", 0x1E36=>"l", 0x1E37=>"l", 0x1E38=>"l", 0x1E39=>"l", 0x1E3A=>"l", 0x1E3B=>"l", 0x1E3C=>"l", 0x1E3D=>"l", 0x2C60=>"l", 0x2C61=>"l", 0x2C62=>"l", 0x019C=>"m", 0x026F=>"m", 0x0270=>"m", 0x0271=>"m", 0x1D0D=>"m", 0x1D1F=>"m", 0x1D39=>"m", 0x1D50=>"m", 0x1D5A=>"m", 0x1D6F=>"m", 0x1D86=>"m", 0x1DAC=>"m", 0x1DAD=>"m", 0x1E3E=>"m", 0x1E3F=>"m", 0x1E40=>"m", 0x1E41=>"m", 0x1E42=>"m", 0x1E43=>"m", 0x00D1=>"n", 0x00F1=>"n", 0x0143=>"n", 0x0144=>"n", 0x0145=>"n", 0x0146=>"n", 0x0147=>"n", 0x0148=>"n", 0x0149=>"n", 0x019D=>"n", 0x019E=>"n", 0x01CB=>"n", 0x01F8=>"n", 0x01F9=>"n", 0x0220=>"n", 0x0235=>"n", 0x0272=>"n", 0x0273=>"n", 0x0274=>"n", 0x1D0E=>"n", 0x1D3A=>"n", 0x1D3B=>"n", 0x1D70=>"n", 0x1D87=>"n", 0x1DAE=>"n", 0x1DAF=>"n", 0x1DB0=>"n", 0x1E44=>"n", 0x1E45=>"n", 0x1E46=>"n", 0x1E47=>"n", 0x1E48=>"n", 0x1E49=>"n", 0x1E4A=>"n", 0x1E4B=>"n", 0x207F=>"n", 0x00D2=>"o", 0x00D3=>"o", 0x00D4=>"o", 0x00D5=>"o", 0x00D6=>"o", 0x00D8=>"o", 0x00F2=>"o", 0x00F3=>"o", 0x00F4=>"o", 0x00F5=>"o", 0x00F6=>"o", 0x00F8=>"o", 0x01030F=>"o", 0x014C=>"o", 0x014D=>"o", 0x014E=>"o", 0x014F=>"o", 0x0150=>"o", 0x0151=>"o", 0x0186=>"o", 0x019F=>"o", 0x01A0=>"o", 0x01A1=>"o", 0x01D1=>"o", 0x01D2=>"o", 0x01EA=>"o", 0x01EB=>"o", 0x01EC=>"o", 0x01ED=>"o", 0x01FE=>"o", 0x01FF=>"o", 0x020C=>"o", 0x020D=>"o", 0x020E=>"o", 0x020F=>"o", 0x022A=>"o", 0x022B=>"o", 0x022C=>"o", 0x022D=>"o", 0x022E=>"o", 0x022F=>"o", 0x0230=>"o", 0x0231=>"o", 0x0254=>"o", 0x0275=>"o", 0x043E=>"o", 0x04E6=>"o", 0x04E7=>"o", 0x04E8=>"o", 0x04E9=>"o", 0x04EA=>"o", 0x04EB=>"o", 0x1D0F=>"o", 0x1D10=>"o", 0x1D11=>"o", 0x1D12=>"o", 0x1D13=>"o", 0x1D16=>"o", 0x1D17=>"o", 0x1D3C=>"o", 0x1D52=>"o", 0x1D53=>"o", 0x1D54=>"o", 0x1D55=>"o", 0x1D97=>"o", 0x1DB1=>"o", 0x1E4C=>"o", 0x1E4D=>"o", 0x1E4E=>"o", 0x1E4F=>"o", 0x1E50=>"o", 0x1E51=>"o", 0x1E52=>"o", 0x1E53=>"o", 0x1ECC=>"o", 0x1ECD=>"o", 0x1ECE=>"o", 0x1ECF=>"o", 0x1ED0=>"o", 0x1ED1=>"o", 0x1ED2=>"o", 0x1ED3=>"o", 0x1ED4=>"o", 0x1ED5=>"o", 0x1ED6=>"o", 0x1ED7=>"o", 0x1ED8=>"o", 0x1ED9=>"o", 0x1EDA=>"o", 0x1EDB=>"o", 0x1EDC=>"o", 0x1EDD=>"o", 0x1EDE=>"o", 0x1EDF=>"o", 0x1EE0=>"o", 0x1EE1=>"o", 0x1EE2=>"o", 0x1EE3=>"o", 0x2092=>"o", 0x2C9E=>"o", 0x2C9F=>"o", 0x01A4=>"p", 0x01A5=>"p", 0x1D18=>"p", 0x1D3E=>"p", 0x1D56=>"p", 0x1D71=>"p", 0x1D7D=>"p", 0x1D88=>"p", 0x1E54=>"p", 0x1E55=>"p", 0x1E56=>"p", 0x1E57=>"p", 0x2C63=>"p", 0x024A=>"q", 0x024B=>"q", 0x02A0=>"q", 0x0154=>"r", 0x0155=>"r", 0x0156=>"r", 0x0157=>"r", 0x0158=>"r", 0x0159=>"r", 0x0210=>"r", 0x0211=>"r", 0x0212=>"r", 0x0213=>"r", 0x024C=>"r", 0x024D=>"r", 0x0279=>"r", 0x027A=>"r", 0x027B=>"r", 0x027C=>"r", 0x027D=>"r", 0x027E=>"r", 0x027F=>"r", 0x0280=>"r", 0x0281=>"r", 0x02B3=>"r", 0x02B4=>"r", 0x02B5=>"r", 0x02B6=>"r", 0x1D19=>"r", 0x1D1A=>"r", 0x1D3F=>"r", 0x1D63=>"r", 0x1D72=>"r", 0x1D73=>"r", 0x1D89=>"r", 0x1DCA=>"r", 0x1E58=>"r", 0x1E59=>"r", 0x1E5A=>"r", 0x1E5B=>"r", 0x1E5C=>"r", 0x1E5D=>"r", 0x1E5E=>"r", 0x1E5F=>"r", 0x211C=>"r", 0x2C64=>"r", 0x00DF=>"s", 0x015A=>"s", 0x015B=>"s", 0x015C=>"s", 0x015D=>"s", 0x015E=>"s", 0x015F=>"s", 0x0160=>"s", 0x0161=>"s", 0x017F=>"s", 0x0218=>"s", 0x0219=>"s", 0x023F=>"s", 0x0282=>"s", 0x02E2=>"s", 0x1D74=>"s", 0x1D8A=>"s", 0x1DB3=>"s", 0x1E60=>"s", 0x1E61=>"s", 0x1E62=>"s", 0x1E63=>"s", 0x1E64=>"s", 0x1E65=>"s", 0x1E66=>"s", 0x1E67=>"s", 0x1E68=>"s", 0x1E69=>"s", 0x1E9B=>"s", 0x0162=>"t", 0x0163=>"t", 0x0164=>"t", 0x0165=>"t", 0x0166=>"t", 0x0167=>"t", 0x01AB=>"t", 0x01AC=>"t", 0x01AD=>"t", 0x01AE=>"t", 0x021A=>"t", 0x021B=>"t", 0x0236=>"t", 0x023E=>"t", 0x0287=>"t", 0x0288=>"t", 0x1D1B=>"t", 0x1D40=>"t", 0x1D57=>"t", 0x1D75=>"t", 0x1DB5=>"t", 0x1E6A=>"t", 0x1E6B=>"t", 0x1E6C=>"t", 0x1E6D=>"t", 0x1E6E=>"t", 0x1E6F=>"t", 0x1E70=>"t", 0x1E71=>"t", 0x1E97=>"t", 0x2C66=>"t", 0x00D9=>"u", 0x00DA=>"u", 0x00DB=>"u", 0x00DC=>"u", 0x00F9=>"u", 0x00FA=>"u", 0x00FB=>"u", 0x00FC=>"u", 0x010316=>"u", 0x0168=>"u", 0x0169=>"u", 0x016A=>"u", 0x016B=>"u", 0x016C=>"u", 0x016D=>"u", 0x016E=>"u", 0x016F=>"u", 0x0170=>"u", 0x0171=>"u", 0x0172=>"u", 0x0173=>"u", 0x01AF=>"u", 0x01B0=>"u", 0x01D3=>"u", 0x01D4=>"u", 0x01D5=>"u", 0x01D6=>"u", 0x01D7=>"u", 0x01D8=>"u", 0x01D9=>"u", 0x01DA=>"u", 0x01DB=>"u", 0x01DC=>"u", 0x0214=>"u", 0x0215=>"u", 0x0216=>"u", 0x0217=>"u", 0x0244=>"u", 0x0289=>"u", 0x1D1C=>"u", 0x1D1D=>"u", 0x1D1E=>"u", 0x1D41=>"u", 0x1D58=>"u", 0x1D59=>"u", 0x1D64=>"u", 0x1D7E=>"u", 0x1D99=>"u", 0x1DB6=>"u", 0x1DB8=>"u", 0x1E72=>"u", 0x1E73=>"u", 0x1E74=>"u", 0x1E75=>"u", 0x1E76=>"u", 0x1E77=>"u", 0x1E78=>"u", 0x1E79=>"u", 0x1E7A=>"u", 0x1E7B=>"u", 0x1EE4=>"u", 0x1EE5=>"u", 0x1EE6=>"u", 0x1EE7=>"u", 0x1EE8=>"u", 0x1EE9=>"u", 0x1EEA=>"u", 0x1EEB=>"u", 0x1EEC=>"u", 0x1EED=>"u", 0x1EEE=>"u", 0x1EEF=>"u", 0x1EF0=>"u", 0x1EF1=>"u", 0x01B2=>"v", 0x0245=>"v", 0x028B=>"v", 0x028C=>"v", 0x1D20=>"v", 0x1D5B=>"v", 0x1D65=>"v", 0x1D8C=>"v", 0x1DB9=>"v", 0x1DBA=>"v", 0x1E7C=>"v", 0x1E7D=>"v", 0x1E7E=>"v", 0x1E7F=>"v", 0x2C74=>"v", 0x0174=>"w", 0x0175=>"w", 0x028D=>"w", 0x02B7=>"w", 0x1D21=>"w", 0x1D42=>"w", 0x1E80=>"w", 0x1E81=>"w", 0x1E82=>"w", 0x1E83=>"w", 0x1E84=>"w", 0x1E85=>"w", 0x1E86=>"w", 0x1E87=>"w", 0x1E88=>"w", 0x1E89=>"w", 0x1E98=>"w", 0x02E3=>"x", 0x1D8D=>"x", 0x1E8A=>"x", 0x1E8B=>"x", 0x1E8C=>"x", 0x1E8D=>"x", 0x2093=>"x", 0x00DD=>"y", 0x00FD=>"y", 0x00FF=>"y", 0x0176=>"y", 0x0177=>"y", 0x0178=>"y", 0x01B3=>"y", 0x01B4=>"y", 0x0232=>"y", 0x0233=>"y", 0x024E=>"y", 0x024F=>"y", 0x028E=>"y", 0x028F=>"y", 0x02B8=>"y", 0x1E8E=>"y", 0x1E8F=>"y", 0x1E99=>"y", 0x1EF2=>"y", 0x1EF3=>"y", 0x1EF4=>"y", 0x1EF5=>"y", 0x1EF6=>"y", 0x1EF7=>"y", 0x1EF8=>"y", 0x1EF9=>"y", 0x0179=>"z", 0x017A=>"z", 0x017B=>"z", 0x017C=>"z", 0x017D=>"z", 0x017E=>"z", 0x01B5=>"z", 0x01B6=>"z", 0x0224=>"z", 0x0225=>"z", 0x0240=>"z", 0x0290=>"z", 0x0291=>"z", 0x1D22=>"z", 0x1D76=>"z", 0x1D8E=>"z", 0x1DBB=>"z", 0x1DBC=>"z", 0x1DBD=>"z", 0x1E90=>"z", 0x1E91=>"z", 0x1E92=>"z", 0x1E93=>"z", 0x1E94=>"z", 0x1E95=>"z", 0x2128=>"z", 0x2C6B=>"z", 0x2C6C=>"z", 0x00C6=>0x00E6, 0x01E2=>0x00E6, 0x01E3=>0x00E6, 0x01FC=>0x00E6, 0x01FD=>0x00E6, 0x1D01=>0x00E6, 0x1D02=>0x00E6, 0x1D2D=>0x00E6, 0x1D46=>0x00E6, 0x00E6, 0x0622=>0x0627, 0x0623=>0x0627, 0x0624=>0x0648, 0x0625=>0x0627, 0x0626=>0x064A, 0x06C0=>0x06D5, 0x06C2=>0x06C1, 0x06D3=>0x06D2, 0xFB50=>0x0671, 0xFB51=>0x0671, 0xFB52=>0x067B, 0xFB53=>0x067B, 0xFB54=>0x067B, 0xFB56=>0x067E, 0xFB57=>0x067E, 0xFB58=>0x067E, 0xFB5A=>0x0680, 0xFB5B=>0x0680, 0xFB5C=>0x0680, 0xFB5E=>0x067A, 0xFB5F=>0x067A, 0xFB60=>0x067A, 0xFB62=>0x067F, 0xFB63=>0x067F, 0xFB64=>0x067F, 0xFB66=>0x0679, 0xFB67=>0x0679, 0xFB68=>0x0679, 0xFB6A=>0x06A4, 0xFB6B=>0x06A4, 0xFB6C=>0x06A4, 0xFB6E=>0x06A6, 0xFB6F=>0x06A6, 0xFB70=>0x06A6, 0xFB72=>0x0684, 0xFB73=>0x0684, 0xFB74=>0x0684, 0xFB76=>0x0683, 0xFB77=>0x0683, 0xFB78=>0x0683, 0xFB7A=>0x0686, 0xFB7B=>0x0686, 0xFB7C=>0x0686, 0xFB7E=>0x0687, 0xFB7F=>0x0687, 0xFB80=>0x0687, 0xFB82=>0x068D, 0xFB83=>0x068D, 0xFB84=>0x068C, 0xFB85=>0x068C, 0xFB86=>0x068E, 0xFB87=>0x068E, 0xFB88=>0x0688, 0xFB89=>0x0688, 0xFB8A=>0x0698, 0xFB8B=>0x0698, 0xFB8C=>0x0691, 0xFB8D=>0x0691, 0xFB8E=>0x06A9, 0xFB8F=>0x06A9, 0xFB90=>0x06A9, 0xFB92=>0x06AF, 0xFB93=>0x06AF, 0xFB94=>0x06AF, 0xFB96=>0x06B3, 0xFB97=>0x06B3, 0xFB98=>0x06B3, 0xFB9A=>0x06B1, 0xFB9B=>0x06B1, 0xFB9C=>0x06B1, 0xFB9E=>0x06BA, 0xFB9F=>0x06BA, 0xFBA0=>0x06BB, 0xFBA1=>0x06BB, 0xFBA2=>0x06BB, 0xFBA4=>0x06C0, 0xFBA5=>0x06C0, 0xFBA6=>0x06C1, 0xFBA7=>0x06C1, 0xFBA8=>0x06C1, 0xFBAA=>0x06BE, 0xFBAB=>0x06BE, 0xFBAC=>0x06BE, 0xFBAE=>0x06D2, 0xFBAF=>0x06D2, 0xFBB0=>0x06D3, 0xFBB1=>0x06D3, 0xFBD3=>0x06AD, 0xFBD4=>0x06AD, 0xFBD5=>0x06AD, 0xFBD7=>0x06C7, 0xFBD8=>0x06C7, 0xFBD9=>0x06C6, 0xFBDA=>0x06C6, 0xFBDB=>0x06C8, 0xFBDC=>0x06C8, 0xFBDD=>0x0677, 0xFBDE=>0x06CB, 0xFBDF=>0x06CB, 0xFBE0=>0x06C5, 0xFBE1=>0x06C5, 0xFBE2=>0x06C9, 0xFBE3=>0x06C9, 0xFBE4=>0x06D0, 0xFBE5=>0x06D0, 0xFBE6=>0x06D0, 0xFBE8=>0x0649, 0xFBFC=>0x06CC, 0xFBFD=>0x06CC, 0xFBFE=>0x06CC, 0x09DC=>0x09A1, 0x09DD=>0x09A2, 0x09DF=>0x09AF, 0x09F0=>0x09AC, 0x09F1=>0x09AC, 0xF900=>0x8C48, 0xF901=>0x66F4, 0xF902=>0x8ECA, 0xF903=>0x8CC8, 0xF904=>0x6ED1, 0xF905=>0x4E32, 0xF906=>0x53E5, 0xF907=>0x9F9C, 0xF908=>0x9F9C, 0xF909=>0x5951, 0xF90A=>0x91D1, 0xF90B=>0x5587, 0xF90C=>0x5948, 0xF90D=>0x61F6, 0xF90E=>0x7669, 0xF90F=>0x7F85, 0xF910=>0x863F, 0xF911=>0x87BA, 0xF912=>0x88F8, 0xF913=>0x908F, 0xF914=>0x6A02, 0xF915=>0x6D1B, 0xF916=>0x70D9, 0xF917=>0x73DE, 0xF918=>0x843D, 0xF919=>0x916A, 0xF91A=>0x99F1, 0xF91B=>0x4E82, 0xF91C=>0x5375, 0xF91D=>0x6B04, 0xF91E=>0x721B, 0xF91F=>0x862D, 0xF920=>0x9E1E, 0xF921=>0x5D50, 0xF922=>0x6FEB, 0xF923=>0x85CD, 0xF924=>0x8964, 0xF925=>0x62C9, 0xF926=>0x81D8, 0xF927=>0x881F, 0xF928=>0x5ECA, 0xF929=>0x6717, 0xF92A=>0x6D6A, 0xF92B=>0x72FC, 0xF92C=>0x90CE, 0xF92D=>0x4F86, 0xF92E=>0x51B7, 0xF92F=>0x52DE, 0xF930=>0x64C4, 0xF931=>0x6AD3, 0xF932=>0x7210, 0xF933=>0x76E7, 0xF934=>0x8001, 0xF935=>0x8606, 0xF936=>0x865C, 0xF937=>0x8DEF, 0xF938=>0x9732, 0xF939=>0x9B6F, 0xF93A=>0x9DFA, 0xF93B=>0x788C, 0xF93C=>0x797F, 0xF93D=>0x7DA0, 0xF93E=>0x83C9, 0xF93F=>0x9304, 0xF940=>0x9E7F, 0xF941=>0x8AD6, 0xF942=>0x58DF, 0xF943=>0x5F04, 0xF944=>0x7C60, 0xF945=>0x807E, 0xF946=>0x7262, 0xF947=>0x78CA, 0xF948=>0x8CC2, 0xF949=>0x96F7, 0xF94A=>0x58D8, 0xF94B=>0x5C62, 0xF94C=>0x6A13, 0xF94D=>0x6DDA, 0xF94E=>0x6F0F, 0xF94F=>0x7D2F, 0xF950=>0x7E37, 0xF951=>0x964B, 0xF952=>0x52D2, 0xF953=>0x808B, 0xF954=>0x51DC, 0xF955=>0x51CC, 0xF956=>0x7A1C, 0xF957=>0x7DBE, 0xF958=>0x83F1, 0xF959=>0x9675, 0xF95A=>0x8B80, 0xF95B=>0x62CF, 0xF95C=>0x6A02, 0xF95D=>0x8AFE, 0xF95E=>0x4E39, 0xF95F=>0x5BE7, 0xF960=>0x6012, 0xF961=>0x7387, 0xF962=>0x7570, 0xF963=>0x5317, 0xF964=>0x78FB, 0xF965=>0x4FBF, 0xF966=>0x5FA9, 0xF967=>0x4E0D, 0xF968=>0x6CCC, 0xF969=>0x6578, 0xF96A=>0x7D22, 0xF96B=>0x53C3, 0xF96C=>0x585E, 0xF96D=>0x7701, 0xF96E=>0x8449, 0xF96F=>0x8AAA, 0xF970=>0x6BBA, 0xF971=>0x8FB0, 0xF972=>0x6C88, 0xF973=>0x62FE, 0xF974=>0x82E5, 0xF975=>0x63A0, 0xF976=>0x7565, 0xF977=>0x4EAE, 0xF978=>0x5169, 0xF979=>0x51C9, 0xF97A=>0x6881, 0xF97B=>0x7CE7, 0xF97C=>0x826F, 0xF97D=>0x8AD2, 0xF97E=>0x91CF, 0xF97F=>0x52F5, 0xF980=>0x5442, 0xF981=>0x5973, 0xF982=>0x5EEC, 0xF983=>0x65C5, 0xF984=>0x6FFE, 0xF985=>0x792A, 0xF986=>0x95AD, 0xF987=>0x9A6A, 0xF988=>0x9E97, 0xF989=>0x9ECE, 0xF98A=>0x529B, 0xF98B=>0x66C6, 0xF98C=>0x6B77, 0xF98D=>0x8F62, 0xF98E=>0x5E74, 0xF98F=>0x6190, 0xF990=>0x6200, 0xF991=>0x649A, 0xF992=>0x6F23, 0xF993=>0x7149, 0xF994=>0x7489, 0xF995=>0x79CA, 0xF996=>0x7DF4, 0xF997=>0x806F, 0xF998=>0x8F26, 0xF999=>0x84EE, 0xF99A=>0x9023, 0xF99B=>0x934A, 0xF99C=>0x5217, 0xF99D=>0x52A3, 0xF99E=>0x54BD, 0xF99F=>0x70C8, 0xF9A0=>0x88C2, 0xF9A1=>0x8AAA, 0xF9A2=>0x5EC9, 0xF9A3=>0x5FF5, 0xF9A4=>0x637B, 0xF9A5=>0x6BAE, 0xF9A6=>0x7C3E, 0xF9A7=>0x7375, 0xF9A8=>0x4EE4, 0xF9A9=>0x56F9, 0xF9AA=>0x5BE7, 0xF9AB=>0x5DBA, 0xF9AC=>0x601C, 0xF9AD=>0x73B2, 0xF9AE=>0x7469, 0xF9AF=>0x7F9A, 0xF9B0=>0x8046, 0xF9B1=>0x9234, 0xF9B2=>0x96F6, 0xF9B3=>0x9748, 0xF9B4=>0x9818, 0xF9B5=>0x4F8B, 0xF9B6=>0x79AE, 0xF9B7=>0x91B4, 0xF9B8=>0x96B8, 0xF9B9=>0x60E1, 0xF9BA=>0x4E86, 0xF9BB=>0x50DA, 0xF9BC=>0x5BEE, 0xF9BD=>0x5C3F, 0xF9BE=>0x6599, 0xF9BF=>0x6A02, 0xF9C0=>0x71CE, 0xF9C1=>0x7642, 0xF9C2=>0x84FC, 0xF9C3=>0x907C, 0xF9C4=>0x9F8D, 0xF9C5=>0x6688, 0xF9C6=>0x962E, 0xF9C7=>0x5289, 0xF9C8=>0x677B, 0xF9C9=>0x67F3, 0xF9CA=>0x6D41, 0xF9CB=>0x6E9C, 0xF9CC=>0x7409, 0xF9CD=>0x7559, 0xF9CE=>0x786B, 0xF9CF=>0x7D10, 0xF9D0=>0x985E, 0xF9D1=>0x516D, 0xF9D2=>0x622E, 0xF9D3=>0x9678, 0xF9D4=>0x502B, 0xF9D5=>0x5D19, 0xF9D6=>0x6DEA, 0xF9D7=>0x8F2A, 0xF9D8=>0x5F8B, 0xF9D9=>0x6144, 0xF9DA=>0x6817, 0xF9DB=>0x7387, 0xF9DC=>0x9686, 0xF9DD=>0x5229, 0xF9DE=>0x540F, 0xF9DF=>0x5C65, 0xF9E0=>0x6613, 0xF9E1=>0x674E, 0xF9E2=>0x68A8, 0xF9E3=>0x6CE5, 0xF9E4=>0x7406, 0xF9E5=>0x75E2, 0xF9E6=>0x7F79, 0xF9E7=>0x88CF, 0xF9E8=>0x88E1, 0xF9E9=>0x91CC, 0xF9EA=>0x96E2, 0xF9EB=>0x533F, 0xF9EC=>0x6EBA, 0xF9ED=>0x541D, 0xF9EE=>0x71D0, 0xF9EF=>0x7498, 0xF9F0=>0x85FA, 0xF9F1=>0x96A3, 0xF9F2=>0x9C57, 0xF9F3=>0x9E9F, 0xF9F4=>0x6797, 0xF9F5=>0x6DCB, 0xF9F6=>0x81E8, 0xF9F7=>0x7ACB, 0xF9F8=>0x7B20, 0xF9F9=>0x7C92, 0xF9FA=>0x72C0, 0xF9FB=>0x7099, 0xF9FC=>0x8B58, 0xF9FD=>0x4EC0, 0xF9FE=>0x8336, 0xF9FF=>0x523A, 0xFA00=>0x5207, 0xFA01=>0x5EA6, 0xFA02=>0x62D3, 0xFA03=>0x7CD6, 0xFA04=>0x5B85, 0xFA05=>0x6D1E, 0xFA06=>0x66B4, 0xFA07=>0x8F3B, 0xFA08=>0x884C, 0xFA09=>0x964D, 0xFA0A=>0x898B, 0xFA0B=>0x5ED3, 0xFA0C=>0x5140, 0xFA0D=>0x55C0, 0xFA10=>0x585A, 0xFA12=>0x6674, 0xFA15=>0x51DE, 0xFA16=>0x732A, 0xFA17=>0x76CA, 0xFA18=>0x793C, 0xFA19=>0x795E, 0xFA1A=>0x7965, 0xFA1B=>0x798F, 0xFA1C=>0x9756, 0xFA1D=>0x7CBE, 0xFA1E=>0x7FBD, 0xFA20=>0x8612, 0xFA22=>0x8AF8, 0xFA25=>0x9038, 0xFA26=>0x90FD, 0xFA2A=>0x98EF, 0xFA2B=>0x98FC, 0xFA2C=>0x9928, 0xFA2D=>0x9DB4, 0xFA30=>0x4FAE, 0xFA31=>0x50E7, 0xFA32=>0x514D, 0xFA33=>0x52C9, 0xFA34=>0x52E4, 0xFA35=>0x5351, 0xFA36=>0x559D, 0xFA37=>0x5606, 0xFA38=>0x5668, 0xFA39=>0x5840, 0xFA3A=>0x58A8, 0xFA3B=>0x5C64, 0xFA3C=>0x5C6E, 0xFA3D=>0x6094, 0xFA3E=>0x6168, 0xFA3F=>0x618E, 0xFA40=>0x61F2, 0xFA41=>0x654F, 0xFA42=>0x65E2, 0xFA43=>0x6691, 0xFA44=>0x6885, 0xFA45=>0x6D77, 0xFA46=>0x6E1A, 0xFA47=>0x6F22, 0xFA48=>0x716E, 0xFA49=>0x722B, 0xFA4A=>0x7422, 0xFA4B=>0x7891, 0xFA4C=>0x793E, 0xFA4D=>0x7949, 0xFA4E=>0x7948, 0xFA4F=>0x7950, 0xFA50=>0x7956, 0xFA51=>0x795D, 0xFA52=>0x798D, 0xFA53=>0x798E, 0xFA54=>0x7A40, 0xFA55=>0x7A81, 0xFA56=>0x7BC0, 0xFA57=>0x7DF4, 0xFA58=>0x7E09, 0xFA59=>0x7E41, 0xFA5A=>0x7F72, 0xFA5B=>0x8005, 0xFA5C=>0x81ED, 0xFA5D=>0x8279, 0xFA5E=>0x8279, 0xFA5F=>0x8457, 0xFA60=>0x8910, 0xFA61=>0x8996, 0xFA62=>0x8B01, 0xFA63=>0x8B39, 0xFA64=>0x8CD3, 0xFA65=>0x8D08, 0xFA66=>0x8FB6, 0xFA67=>0x9038, 0xFA68=>0x96E3, 0xFA69=>0x97FF, 0xFA6A=>0x983B, 0xFA70=>0x4E26, 0xFA71=>0x51B5, 0xFA72=>0x5168, 0xFA73=>0x4F80, 0xFA74=>0x5145, 0xFA75=>0x5180, 0xFA76=>0x52C7, 0xFA77=>0x52FA, 0xFA78=>0x559D, 0xFA79=>0x5555, 0xFA7A=>0x5599, 0xFA7B=>0x55E2, 0xFA7C=>0x585A, 0xFA7D=>0x58B3, 0xFA7E=>0x5944, 0xFA7F=>0x5954, 0xFA80=>0x5A62, 0xFA81=>0x5B28, 0xFA82=>0x5ED2, 0xFA83=>0x5ED9, 0xFA84=>0x5F69, 0xFA85=>0x5FAD, 0xFA86=>0x60D8, 0xFA87=>0x614E, 0xFA88=>0x6108, 0xFA89=>0x618E, 0xFA8A=>0x6160, 0xFA8B=>0x61F2, 0xFA8C=>0x6234, 0xFA8D=>0x63C4, 0xFA8E=>0x641C, 0xFA8F=>0x6452, 0xFA90=>0x6556, 0xFA91=>0x6674, 0xFA92=>0x6717, 0xFA93=>0x671B, 0xFA94=>0x6756, 0xFA95=>0x6B79, 0xFA96=>0x6BBA, 0xFA97=>0x6D41, 0xFA98=>0x6EDB, 0xFA99=>0x6ECB, 0xFA9A=>0x6F22, 0xFA9B=>0x701E, 0xFA9C=>0x716E, 0xFA9D=>0x77A7, 0xFA9E=>0x7235, 0xFA9F=>0x72AF, 0xFAA0=>0x732A, 0xFAA1=>0x7471, 0xFAA2=>0x7506, 0xFAA3=>0x753B, 0xFAA4=>0x761D, 0xFAA5=>0x761F, 0xFAA6=>0x76CA, 0xFAA7=>0x76DB, 0xFAA8=>0x76F4, 0xFAA9=>0x774A, 0xFAAA=>0x7740, 0xFAAB=>0x78CC, 0xFAAC=>0x7AB1, 0xFAAD=>0x7BC0, 0xFAAE=>0x7C7B, 0xFAAF=>0x7D5B, 0xFAB0=>0x7DF4, 0xFAB1=>0x7F3E, 0xFAB2=>0x8005, 0xFAB3=>0x8352, 0xFAB4=>0x83EF, 0xFAB5=>0x8779, 0xFAB6=>0x8941, 0xFAB7=>0x8986, 0xFAB8=>0x8996, 0xFAB9=>0x8ABF, 0xFABA=>0x8AF8, 0xFABB=>0x8ACB, 0xFABC=>0x8B01, 0xFABD=>0x8AFE, 0xFABE=>0x8AED, 0xFABF=>0x8B39, 0xFAC0=>0x8B8A, 0xFAC1=>0x8D08, 0xFAC2=>0x8F38, 0xFAC3=>0x9072, 0xFAC4=>0x9199, 0xFAC5=>0x9276, 0xFAC6=>0x967C, 0xFAC7=>0x96E3, 0xFAC8=>0x9756, 0xFAC9=>0x97DB, 0xFACA=>0x97FF, 0xFACB=>0x980B, 0xFACC=>0x983B, 0xFACD=>0x9B12, 0xFACE=>0x9F9C, 0xFACF=>0x2284A, 0xFAD0=>0x22844, 0xFAD1=>0x233D5, 0xFAD2=>0x3B9D, 0xFAD3=>0x4018, 0xFAD4=>0x4039, 0xFAD5=>0x25249, 0xFAD6=>0x25CD0, 0xFAD7=>0x27ED3, 0xFAD8=>0x9F43, 0xFAD9=>0x9F8E, 0x2F800=>0x4E3D, 0x2F801=>0x4E38, 0x2F802=>0x4E41, 0x2F803=>0x20122, 0x2F804=>0x4F60, 0x2F805=>0x4FAE, 0x2F806=>0x4FBB, 0x2F807=>0x5002, 0x2F808=>0x507A, 0x2F809=>0x5099, 0x2F80A=>0x50E7, 0x2F80B=>0x50CF, 0x2F80C=>0x349E, 0x2F80D=>0x2063A, 0x2F80E=>0x514D, 0x2F80F=>0x5154, 0x2F810=>0x5164, 0x2F811=>0x5177, 0x2F812=>0x2051C, 0x2F813=>0x34B9, 0x2F814=>0x5167, 0x2F815=>0x518D, 0x2F816=>0x2054B, 0x2F817=>0x5197, 0x2F818=>0x51A4, 0x2F819=>0x4ECC, 0x2F81A=>0x51AC, 0x2F81B=>0x51B5, 0x2F81C=>0x291DF, 0x2F81D=>0x51F5, 0x2F81E=>0x5203, 0x2F81F=>0x34DF, 0x2F820=>0x523B, 0x2F821=>0x5246, 0x2F822=>0x5272, 0x2F823=>0x5277, 0x2F824=>0x3515, 0x2F825=>0x52C7, 0x2F826=>0x52C9, 0x2F827=>0x52E4, 0x2F828=>0x52FA, 0x2F829=>0x5305, 0x2F82A=>0x5306, 0x2F82B=>0x5317, 0x2F82C=>0x5349, 0x2F82D=>0x5351, 0x2F82E=>0x535A, 0x2F82F=>0x5373, 0x2F830=>0x537D, 0x2F831=>0x537F, 0x2F832=>0x537F, 0x2F833=>0x537F, 0x2F834=>0x20A2C, 0x2F835=>0x7070, 0x2F836=>0x53CA, 0x2F837=>0x53DF, 0x2F838=>0x20B63, 0x2F839=>0x53EB, 0x2F83A=>0x53F1, 0x2F83B=>0x5406, 0x2F83C=>0x549E, 0x2F83D=>0x5438, 0x2F83E=>0x5448, 0x2F83F=>0x5468, 0x2F840=>0x54A2, 0x2F841=>0x54F6, 0x2F842=>0x5510, 0x2F843=>0x5553, 0x2F844=>0x5563, 0x2F845=>0x5584, 0x2F846=>0x5584, 0x2F847=>0x5599, 0x2F848=>0x55AB, 0x2F849=>0x55B3, 0x2F84A=>0x55C2, 0x2F84B=>0x5716, 0x2F84C=>0x5606, 0x2F84D=>0x5717, 0x2F84E=>0x5651, 0x2F84F=>0x5674, 0x2F850=>0x5207, 0x2F851=>0x58EE, 0x2F852=>0x57CE, 0x2F853=>0x57F4, 0x2F854=>0x580D, 0x2F855=>0x578B, 0x2F856=>0x5832, 0x2F857=>0x5831, 0x2F858=>0x58AC, 0x2F859=>0x214E4, 0x2F85A=>0x58F2, 0x2F85B=>0x58F7, 0x2F85C=>0x5906, 0x2F85D=>0x591A, 0x2F85E=>0x5922, 0x2F85F=>0x5962, 0x2F860=>0x216A8, 0x2F861=>0x216EA, 0x2F862=>0x59EC, 0x2F863=>0x5A1B, 0x2F864=>0x5A27, 0x2F865=>0x59D8, 0x2F866=>0x5A66, 0x2F867=>0x36EE, 0x2F868=>0x36FC, 0x2F869=>0x5B08, 0x2F86A=>0x5B3E, 0x2F86B=>0x5B3E, 0x2F86C=>0x219C8, 0x2F86D=>0x5BC3, 0x2F86E=>0x5BD8, 0x2F86F=>0x5BE7, 0x2F870=>0x5BF3, 0x2F871=>0x21B18, 0x2F872=>0x5BFF, 0x2F873=>0x5C06, 0x2F874=>0x5F53, 0x2F875=>0x5C22, 0x2F876=>0x3781, 0x2F877=>0x5C60, 0x2F878=>0x5C6E, 0x2F879=>0x5CC0, 0x2F87A=>0x5C8D, 0x2F87B=>0x21DE4, 0x2F87C=>0x5D43, 0x2F87D=>0x21DE6, 0x2F87E=>0x5D6E, 0x2F87F=>0x5D6B, 0x2F880=>0x5D7C, 0x2F881=>0x5DE1, 0x2F882=>0x5DE2, 0x2F883=>0x382F, 0x2F884=>0x5DFD, 0x2F885=>0x5E28, 0x2F886=>0x5E3D, 0x2F887=>0x5E69, 0x2F888=>0x3862, 0x2F889=>0x22183, 0x2F88A=>0x387C, 0x2F88B=>0x5EB0, 0x2F88C=>0x5EB3, 0x2F88D=>0x5EB6, 0x2F88E=>0x5ECA, 0x2F88F=>0x2A392, 0x2F890=>0x5EFE, 0x2F891=>0x22331, 0x2F892=>0x22331, 0x2F893=>0x8201, 0x2F894=>0x5F22, 0x2F895=>0x5F22, 0x2F896=>0x38C7, 0x2F897=>0x232B8, 0x2F898=>0x261DA, 0x2F899=>0x5F62, 0x2F89A=>0x5F6B, 0x2F89B=>0x38E3, 0x2F89C=>0x5F9A, 0x2F89D=>0x5FCD, 0x2F89E=>0x5FD7, 0x2F89F=>0x5FF9, 0x2F8A0=>0x6081, 0x2F8A1=>0x393A, 0x2F8A2=>0x391C, 0x2F8A3=>0x6094, 0x2F8A4=>0x226D4, 0x2F8A5=>0x60C7, 0x2F8A6=>0x6148, 0x2F8A7=>0x614C, 0x2F8A8=>0x614E, 0x2F8A9=>0x614C, 0x2F8AA=>0x617A, 0x2F8AB=>0x618E, 0x2F8AC=>0x61B2, 0x2F8AD=>0x61A4, 0x2F8AE=>0x61AF, 0x2F8AF=>0x61DE, 0x2F8B0=>0x61F2, 0x2F8B1=>0x61F6, 0x2F8B2=>0x6210, 0x2F8B3=>0x621B, 0x2F8B4=>0x625D, 0x2F8B5=>0x62B1, 0x2F8B6=>0x62D4, 0x2F8B7=>0x6350, 0x2F8B8=>0x22B0C, 0x2F8B9=>0x633D, 0x2F8BA=>0x62FC, 0x2F8BB=>0x6368, 0x2F8BC=>0x6383, 0x2F8BD=>0x63E4, 0x2F8BE=>0x22BF1, 0x2F8BF=>0x6422, 0x2F8C0=>0x63C5, 0x2F8C1=>0x63A9, 0x2F8C2=>0x3A2E, 0x2F8C3=>0x6469, 0x2F8C4=>0x647E, 0x2F8C5=>0x649D, 0x2F8C6=>0x6477, 0x2F8C7=>0x3A6C, 0x2F8C8=>0x654F, 0x2F8C9=>0x656C, 0x2F8CA=>0x2300A, 0x2F8CB=>0x65E3, 0x2F8CC=>0x66F8, 0x2F8CD=>0x6649, 0x2F8CE=>0x3B19, 0x2F8CF=>0x6691, 0x2F8D0=>0x3B08, 0x2F8D1=>0x3AE4, 0x2F8D2=>0x5192, 0x2F8D3=>0x5195, 0x2F8D4=>0x6700, 0x2F8D5=>0x669C, 0x2F8D6=>0x80AD, 0x2F8D7=>0x43D9, 0x2F8D8=>0x6717, 0x2F8D9=>0x671B, 0x2F8DA=>0x6721, 0x2F8DB=>0x675E, 0x2F8DC=>0x6753, 0x2F8DD=>0x233C3, 0x2F8DE=>0x3B49, 0x2F8DF=>0x67FA, 0x2F8E0=>0x6785, 0x2F8E1=>0x6852, 0x2F8E2=>0x6885, 0x2F8E3=>0x2346D, 0x2F8E4=>0x688E, 0x2F8E5=>0x681F, 0x2F8E6=>0x6914, 0x2F8E7=>0x3B9D, 0x2F8E8=>0x6942, 0x2F8E9=>0x69A3, 0x2F8EA=>0x69EA, 0x2F8EB=>0x6AA8, 0x2F8EC=>0x236A3, 0x2F8ED=>0x6ADB, 0x2F8EE=>0x3C18, 0x2F8EF=>0x6B21, 0x2F8F0=>0x238A7, 0x2F8F1=>0x6B54, 0x2F8F2=>0x3C4E, 0x2F8F3=>0x6B72, 0x2F8F4=>0x6B9F, 0x2F8F5=>0x6BBA, 0x2F8F6=>0x6BBB, 0x2F8F7=>0x23A8D, 0x2F8F8=>0x21D0B, 0x2F8F9=>0x23AFA, 0x2F8FA=>0x6C4E, 0x2F8FB=>0x23CBC, 0x2F8FC=>0x6CBF, 0x2F8FD=>0x6CCD, 0x2F8FE=>0x6C67, 0x2F8FF=>0x6D16, 0x2F900=>0x6D3E, 0x2F901=>0x6D77, 0x2F902=>0x6D41, 0x2F903=>0x6D69, 0x2F904=>0x6D78, 0x2F905=>0x6D85, 0x2F906=>0x23D1E, 0x2F907=>0x6D34, 0x2F908=>0x6E2F, 0x2F909=>0x6E6E, 0x2F90A=>0x3D33, 0x2F90B=>0x6ECB, 0x2F90C=>0x6EC7, 0x2F90D=>0x23ED1, 0x2F90E=>0x6DF9, 0x2F90F=>0x6F6E, 0x2F910=>0x23F5E, 0x2F911=>0x23F8E, 0x2F912=>0x6FC6, 0x2F913=>0x7039, 0x2F914=>0x701E, 0x2F915=>0x701B, 0x2F916=>0x3D96, 0x2F917=>0x704A, 0x2F918=>0x707D, 0x2F919=>0x7077, 0x2F91A=>0x70AD, 0x2F91B=>0x20525, 0x2F91C=>0x7145, 0x2F91D=>0x24263, 0x2F91E=>0x719C, 0x2F91F=>0x243AB, 0x2F920=>0x7228, 0x2F921=>0x7235, 0x2F922=>0x7250, 0x2F923=>0x24608, 0x2F924=>0x7280, 0x2F925=>0x7295, 0x2F926=>0x24735, 0x2F927=>0x24814, 0x2F928=>0x737A, 0x2F929=>0x738B, 0x2F92A=>0x3EAC, 0x2F92B=>0x73A5, 0x2F92C=>0x3EB8, 0x2F92D=>0x3EB8, 0x2F92E=>0x7447, 0x2F92F=>0x745C, 0x2F930=>0x7471, 0x2F931=>0x7485, 0x2F932=>0x74CA, 0x2F933=>0x3F1B, 0x2F934=>0x7524, 0x2F935=>0x24C36, 0x2F936=>0x753E, 0x2F937=>0x24C92, 0x2F938=>0x7570, 0x2F939=>0x2219F, 0x2F93A=>0x7610, 0x2F93B=>0x24FA1, 0x2F93C=>0x24FB8, 0x2F93D=>0x25044, 0x2F93E=>0x3FFC, 0x2F93F=>0x4008, 0x2F940=>0x76F4, 0x2F941=>0x250F3, 0x2F942=>0x250F2, 0x2F943=>0x25119, 0x2F944=>0x25133, 0x2F945=>0x771E, 0x2F946=>0x771F, 0x2F947=>0x771F, 0x2F948=>0x774A, 0x2F949=>0x4039, 0x2F94A=>0x778B, 0x2F94B=>0x4046, 0x2F94C=>0x4096, 0x2F94D=>0x2541D, 0x2F94E=>0x784E, 0x2F94F=>0x788C, 0x2F950=>0x78CC, 0x2F951=>0x40E3, 0x2F952=>0x25626, 0x2F953=>0x7956, 0x2F954=>0x2569A, 0x2F955=>0x256C5, 0x2F956=>0x798F, 0x2F957=>0x79EB, 0x2F958=>0x412F, 0x2F959=>0x7A40, 0x2F95A=>0x7A4A, 0x2F95B=>0x7A4F, 0x2F95C=>0x2597C, 0x2F95D=>0x25AA7, 0x2F95E=>0x25AA7, 0x2F95F=>0x7AEE, 0x2F960=>0x4202, 0x2F961=>0x25BAB, 0x2F962=>0x7BC6, 0x2F963=>0x7BC9, 0x2F964=>0x4227, 0x2F965=>0x25C80, 0x2F966=>0x7CD2, 0x2F967=>0x42A0, 0x2F968=>0x7CE8, 0x2F969=>0x7CE3, 0x2F96A=>0x7D00, 0x2F96B=>0x25F86, 0x2F96C=>0x7D63, 0x2F96D=>0x4301, 0x2F96E=>0x7DC7, 0x2F96F=>0x7E02, 0x2F970=>0x7E45, 0x2F971=>0x4334, 0x2F972=>0x26228, 0x2F973=>0x26247, 0x2F974=>0x4359, 0x2F975=>0x262D9, 0x2F976=>0x7F7A, 0x2F977=>0x2633E, 0x2F978=>0x7F95, 0x2F979=>0x7FFA, 0x2F97A=>0x8005, 0x2F97B=>0x264DA, 0x2F97C=>0x26523, 0x2F97D=>0x8060, 0x2F97E=>0x265A8, 0x2F97F=>0x8070, 0x2F980=>0x2335F, 0x2F981=>0x43D5, 0x2F982=>0x80B2, 0x2F983=>0x8103, 0x2F984=>0x440B, 0x2F985=>0x813E, 0x2F986=>0x5AB5, 0x2F987=>0x267A7, 0x2F988=>0x267B5, 0x2F989=>0x23393, 0x2F98A=>0x2339C, 0x2F98B=>0x8201, 0x2F98C=>0x8204, 0x2F98D=>0x8F9E, 0x2F98E=>0x446B, 0x2F98F=>0x8291, 0x2F990=>0x828B, 0x2F991=>0x829D, 0x2F992=>0x52B3, 0x2F993=>0x82B1, 0x2F994=>0x82B3, 0x2F995=>0x82BD, 0x2F996=>0x82E6, 0x2F997=>0x26B3C, 0x2F998=>0x82E5, 0x2F999=>0x831D, 0x2F99A=>0x8363, 0x2F99B=>0x83AD, 0x2F99C=>0x8323, 0x2F99D=>0x83BD, 0x2F99E=>0x83E7, 0x2F99F=>0x8457, 0x2F9A0=>0x8353, 0x2F9A1=>0x83CA, 0x2F9A2=>0x83CC, 0x2F9A3=>0x83DC, 0x2F9A4=>0x26C36, 0x2F9A5=>0x26D6B, 0x2F9A6=>0x26CD5, 0x2F9A7=>0x452B, 0x2F9A8=>0x84F1, 0x2F9A9=>0x84F3, 0x2F9AA=>0x8516, 0x2F9AB=>0x273CA, 0x2F9AC=>0x8564, 0x2F9AD=>0x26F2C, 0x2F9AE=>0x455D, 0x2F9AF=>0x4561, 0x2F9B0=>0x26FB1, 0x2F9B1=>0x270D2, 0x2F9B2=>0x456B, 0x2F9B3=>0x8650, 0x2F9B4=>0x865C, 0x2F9B5=>0x8667, 0x2F9B6=>0x8669, 0x2F9B7=>0x86A9, 0x2F9B8=>0x8688, 0x2F9B9=>0x870E, 0x2F9BA=>0x86E2, 0x2F9BB=>0x8779, 0x2F9BC=>0x8728, 0x2F9BD=>0x876B, 0x2F9BE=>0x8786, 0x2F9BF=>0x45D7, 0x2F9C0=>0x87E1, 0x2F9C1=>0x8801, 0x2F9C2=>0x45F9, 0x2F9C3=>0x8860, 0x2F9C4=>0x8863, 0x2F9C5=>0x27667, 0x2F9C6=>0x88D7, 0x2F9C7=>0x88DE, 0x2F9C8=>0x4635, 0x2F9C9=>0x88FA, 0x2F9CA=>0x34BB, 0x2F9CB=>0x278AE, 0x2F9CC=>0x27966, 0x2F9CD=>0x46BE, 0x2F9CE=>0x46C7, 0x2F9CF=>0x8AA0, 0x2F9D0=>0x8AED, 0x2F9D1=>0x8B8A, 0x2F9D2=>0x8C55, 0x2F9D3=>0x27CA8, 0x2F9D4=>0x8CAB, 0x2F9D5=>0x8CC1, 0x2F9D6=>0x8D1B, 0x2F9D7=>0x8D77, 0x2F9D8=>0x27F2F, 0x2F9D9=>0x20804, 0x2F9DA=>0x8DCB, 0x2F9DB=>0x8DBC, 0x2F9DC=>0x8DF0, 0x2F9DD=>0x208DE, 0x2F9DE=>0x8ED4, 0x2F9DF=>0x8F38, 0x2F9E0=>0x285D2, 0x2F9E1=>0x285ED, 0x2F9E2=>0x9094, 0x2F9E3=>0x90F1, 0x2F9E4=>0x9111, 0x2F9E5=>0x2872E, 0x2F9E6=>0x911B, 0x2F9E7=>0x9238, 0x2F9E8=>0x92D7, 0x2F9E9=>0x92D8, 0x2F9EA=>0x927C, 0x2F9EB=>0x93F9, 0x2F9EC=>0x9415, 0x2F9ED=>0x28BFA, 0x2F9EE=>0x958B, 0x2F9EF=>0x4995, 0x2F9F0=>0x95B7, 0x2F9F1=>0x28D77, 0x2F9F2=>0x49E6, 0x2F9F3=>0x96C3, 0x2F9F4=>0x5DB2, 0x2F9F5=>0x9723, 0x2F9F6=>0x29145, 0x2F9F7=>0x2921A, 0x2F9F8=>0x4A6E, 0x2F9F9=>0x4A76, 0x2F9FA=>0x97E0, 0x2F9FB=>0x2940A, 0x2F9FC=>0x4AB2, 0x2F9FD=>0x29496, 0x2F9FE=>0x980B, 0x2F9FF=>0x980B, 0x2FA00=>0x9829, 0x2FA01=>0x295B6, 0x2FA02=>0x98E2, 0x2FA03=>0x4B33, 0x2FA04=>0x9929, 0x2FA05=>0x99A7, 0x2FA06=>0x99C2, 0x2FA07=>0x99FE, 0x2FA08=>0x4BCE, 0x2FA09=>0x29B30, 0x2FA0A=>0x9B12, 0x2FA0B=>0x9C40, 0x2FA0C=>0x9CFD, 0x2FA0D=>0x4CCE, 0x2FA0E=>0x4CED, 0x2FA0F=>0x9D67, 0x2FA10=>0x2A0CE, 0x2FA11=>0x4CF8, 0x2FA12=>0x2A105, 0x2FA13=>0x2A20E, 0x2FA14=>0x2A291, 0x2FA15=>0x9EBB, 0x2FA16=>0x4D56, 0x2FA17=>0x9EF9, 0x2FA18=>0x9EFE, 0x2FA19=>0x9F05, 0x2FA1A=>0x9F0F, 0x2FA1B=>0x9F16, 0x2FA1C=>0x9F3B, 0x2FA1D=>0x2A600, 0x2F00=>0x4E00, 0x2F01=>0x4E28, 0x2F02=>0x4E36, 0x2F03=>0x4E3F, 0x2F04=>0x4E59, 0x2F05=>0x4E85, 0x2F06=>0x4E8C, 0x2F07=>0x4EA0, 0x2F08=>0x4EBA, 0x2F09=>0x513F, 0x2F0A=>0x5165, 0x2F0B=>0x516B, 0x2F0C=>0x5182, 0x2F0D=>0x5196, 0x2F0E=>0x51AB, 0x2F0F=>0x51E0, 0x2F10=>0x51F5, 0x2F11=>0x5200, 0x2F12=>0x529B, 0x2F13=>0x52F9, 0x2F14=>0x5315, 0x2F15=>0x531A, 0x2F16=>0x5338, 0x2F17=>0x5341, 0x2F18=>0x535C, 0x2F19=>0x5369, 0x2F1A=>0x5382, 0x2F1B=>0x53B6, 0x2F1C=>0x53C8, 0x2F1D=>0x53E3, 0x2F1E=>0x56D7, 0x2F1F=>0x571F, 0x2F20=>0x58EB, 0x2F21=>0x5902, 0x2F22=>0x590A, 0x2F23=>0x5915, 0x2F24=>0x5927, 0x2F25=>0x5973, 0x2F26=>0x5B50, 0x2F27=>0x5B80, 0x2F28=>0x5BF8, 0x2F29=>0x5C0F, 0x2F2A=>0x5C22, 0x2F2B=>0x5C38, 0x2F2C=>0x5C6E, 0x2F2D=>0x5C71, 0x2F2E=>0x5DDB, 0x2F2F=>0x5DE5, 0x2F30=>0x5DF1, 0x2F31=>0x5DFE, 0x2F32=>0x5E72, 0x2F33=>0x5E7A, 0x2F34=>0x5E7F, 0x2F35=>0x5EF4, 0x2F36=>0x5EFE, 0x2F37=>0x5F0B, 0x2F38=>0x5F13, 0x2F39=>0x5F50, 0x2F3A=>0x5F61, 0x2F3B=>0x5F73, 0x2F3C=>0x5FC3, 0x2F3D=>0x6208, 0x2F3E=>0x6236, 0x2F3F=>0x624B, 0x2F40=>0x652F, 0x2F41=>0x6534, 0x2F42=>0x6587, 0x2F43=>0x6597, 0x2F44=>0x65A4, 0x2F45=>0x65B9, 0x2F46=>0x65E0, 0x2F47=>0x65E5, 0x2F48=>0x66F0, 0x2F49=>0x6708, 0x2F4A=>0x6728, 0x2F4B=>0x6B20, 0x2F4C=>0x6B62, 0x2F4D=>0x6B79, 0x2F4E=>0x6BB3, 0x2F4F=>0x6BCB, 0x2F50=>0x6BD4, 0x2F51=>0x6BDB, 0x2F52=>0x6C0F, 0x2F53=>0x6C14, 0x2F54=>0x6C34, 0x2F55=>0x706B, 0x2F56=>0x722A, 0x2F57=>0x7236, 0x2F58=>0x723B, 0x2F59=>0x723F, 0x2F5A=>0x7247, 0x2F5B=>0x7259, 0x2F5C=>0x725B, 0x2F5D=>0x72AC, 0x2F5E=>0x7384, 0x2F5F=>0x7389, 0x2F60=>0x74DC, 0x2F61=>0x74E6, 0x2F62=>0x7518, 0x2F63=>0x751F, 0x2F64=>0x7528, 0x2F65=>0x7530, 0x2F66=>0x758B, 0x2F67=>0x7592, 0x2F68=>0x7676, 0x2F69=>0x767D, 0x2F6A=>0x76AE, 0x2F6B=>0x76BF, 0x2F6C=>0x76EE, 0x2F6D=>0x77DB, 0x2F6E=>0x77E2, 0x2F6F=>0x77F3, 0x2F70=>0x793A, 0x2F71=>0x79B8, 0x2F72=>0x79BE, 0x2F73=>0x7A74, 0x2F74=>0x7ACB, 0x2F75=>0x7AF9, 0x2F76=>0x7C73, 0x2F77=>0x7CF8, 0x2F78=>0x7F36, 0x2F79=>0x7F51, 0x2F7A=>0x7F8A, 0x2F7B=>0x7FBD, 0x2F7C=>0x8001, 0x2F7D=>0x800C, 0x2F7E=>0x8012, 0x2F7F=>0x8033, 0x2F80=>0x807F, 0x2F81=>0x8089, 0x2F82=>0x81E3, 0x2F83=>0x81EA, 0x2F84=>0x81F3, 0x2F85=>0x81FC, 0x2F86=>0x820C, 0x2F87=>0x821B, 0x2F88=>0x821F, 0x2F89=>0x826E, 0x2F8A=>0x8272, 0x2F8B=>0x8278, 0x2F8C=>0x864D, 0x2F8D=>0x866B, 0x2F8E=>0x8840, 0x2F8F=>0x884C, 0x2F90=>0x8863, 0x2F91=>0x897E, 0x2F92=>0x898B, 0x2F93=>0x89D2, 0x2F94=>0x8A00, 0x2F95=>0x8C37, 0x2F96=>0x8C46, 0x2F97=>0x8C55, 0x2F98=>0x8C78, 0x2F99=>0x8C9D, 0x2F9A=>0x8D64, 0x2F9B=>0x8D70, 0x2F9C=>0x8DB3, 0x2F9D=>0x8EAB, 0x2F9E=>0x8ECA, 0x2F9F=>0x8F9B, 0x2FA0=>0x8FB0, 0x2FA1=>0x8FB5, 0x2FA2=>0x9091, 0x2FA3=>0x9149, 0x2FA4=>0x91C6, 0x2FA5=>0x91CC, 0x2FA6=>0x91D1, 0x2FA7=>0x9577, 0x2FA8=>0x9580, 0x2FA9=>0x961C, 0x2FAA=>0x96B6, 0x2FAB=>0x96B9, 0x2FAC=>0x96E8, 0x2FAD=>0x9751, 0x2FAE=>0x975E, 0x2FAF=>0x9762, 0x2FB0=>0x9769, 0x2FB1=>0x97CB, 0x2FB2=>0x97ED, 0x2FB3=>0x97F3, 0x2FB4=>0x9801, 0x2FB5=>0x98A8, 0x2FB6=>0x98DB, 0x2FB7=>0x98DF, 0x2FB8=>0x9996, 0x2FB9=>0x9999, 0x2FBA=>0x99AC, 0x2FBB=>0x9AA8, 0x2FBC=>0x9AD8, 0x2FBD=>0x9ADF, 0x2FBE=>0x9B25, 0x2FBF=>0x9B2F, 0x2FC0=>0x9B32, 0x2FC1=>0x9B3C, 0x2FC2=>0x9B5A, 0x2FC3=>0x9CE5, 0x2FC4=>0x9E75, 0x2FC5=>0x9E7F, 0x2FC6=>0x9EA5, 0x2FC7=>0x9EBB, 0x2FC8=>0x9EC3, 0x2FC9=>0x9ECD, 0x2FCA=>0x9ED1, 0x2FCB=>0x9EF9, 0x2FCC=>0x9EFD, 0x2FCD=>0x9F0E, 0x2FCE=>0x9F13, 0x2FCF=>0x9F20, 0x2FD0=>0x9F3B, 0x2FD1=>0x9F4A, 0x2FD2=>0x9F52, 0x2FD3=>0x9F8D, 0x2FD4=>0x9F9C, 0x2FD5=>0x9FA0, 0x3042=>0x3041, 0x3044=>0x3043, 0x3046=>0x3045, 0x3048=>0x3047, 0x304A=>0x3049, 0x304C=>0x304B, 0x304E=>0x304D, 0x3050=>0x304F, 0x3052=>0x3051, 0x3054=>0x3053, 0x3056=>0x3055, 0x3058=>0x3057, 0x305A=>0x3059, 0x305C=>0x305B, 0x305E=>0x305D, 0x3060=>0x305F, 0x3062=>0x3061, 0x3064=>0x3063, 0x3065=>0x3063, 0x3067=>0x3066, 0x3069=>0x3068, 0x3070=>0x306F, 0x3071=>0x306F, 0x3073=>0x3072, 0x3074=>0x3072, 0x3076=>0x3075, 0x3077=>0x3075, 0x3079=>0x3078, 0x307A=>0x3078, 0x307C=>0x307B, 0x307D=>0x307B, 0x3084=>0x3083, 0x3086=>0x3085, 0x3088=>0x3087, 0x308F=>0x308E, 0x3094=>0x3046, 0x3095=>0x304B, 0x3096=>0x3051, 0x30A2=>0x30A1, 0x30A4=>0x30A3, 0x30A6=>0x30A5, 0x30A8=>0x30A7, 0x30AA=>0x30A9, 0x30AC=>0x30AB, 0x30AE=>0x30AD, 0x30B0=>0x30AF, 0x30B2=>0x30B1, 0x30B4=>0x30B3, 0x30B6=>0x30B5, 0x30B8=>0x30B7, 0x30BA=>0x30B9, 0x30BC=>0x30BB, 0x30BE=>0x30BD, 0x30C0=>0x30BF, 0x30C2=>0x30C1, 0x30C5=>0x30C4, 0x30C7=>0x30C6, 0x30C9=>0x30C8, 0x30D0=>0x30CF, 0x30D1=>0x30CF, 0x30D3=>0x30D2, 0x30D4=>0x30D2, 0x30D6=>0x30D5, 0x30D7=>0x30D5, 0x30D9=>0x30D8, 0x30DA=>0x30D8, 0x30DC=>0x30DB, 0x30DD=>0x30DB, 0x30E4=>0x30E3, 0x30E6=>0x30E5, 0x30E8=>0x30E7, 0x30EF=>0x30EE, 0x30F4=>0x30A6, 0x30AB=>0x30F5, 0x30B1=>0x30F6, 0x30F7=>0x30EF, 0x30F8=>0x30F0, 0x30F9=>0x30F1, 0x30FA=>0x30F2, 0x30AF=>0x31F0, 0x30B7=>0x31F1, 0x30B9=>0x31F2, 0x30C8=>0x31F3, 0x30CC=>0x31F4, 0x30CF=>0x31F5, 0x30D2=>0x31F6, 0x30D5=>0x31F7, 0x30D8=>0x31F8, 0x30DB=>0x31F9, 0x30E0=>0x31FA, 0x30E9=>0x31FB, 0x30EA=>0x31FC, 0x30EB=>0x31FD, 0x30EC=>0x31FE, 0x30ED=>0x31FF, 0xFF66=>0x30F2, 0xFF67=>0x30A1, 0xFF68=>0x30A3, 0xFF69=>0x30A5, 0xFF6A=>0x30A7, 0xFF6B=>0x30A9, 0xFF6C=>0x30E3, 0xFF6D=>0x30E5, 0xFF6E=>0x30E7, 0xFF6F=>0x30C3, 0xFF71=>0x30A1, 0xFF72=>0x30A3, 0xFF73=>0x30A5, 0xFF74=>0x30A7, 0xFF75=>0x30A9, 0xFF76=>0x30AB, 0xFF77=>0x30AD, 0xFF78=>0x30AF, 0xFF79=>0x30B1, 0xFF7A=>0x30B3, 0xFF7B=>0x30B5, 0xFF7C=>0x30B7, 0xFF7D=>0x30B9, 0xFF7E=>0x30BB, 0xFF7F=>0x30BD, 0xFF80=>0x30BF, 0xFF81=>0x30C1, 0xFF82=>0x30C3, 0xFF83=>0x30C6, 0xFF84=>0x30C8, 0xFF85=>0x30CA, 0xFF86=>0x30CB, 0xFF87=>0x30CC, 0xFF88=>0x30CD, 0xFF89=>0x30CE, 0xFF8A=>0x30CF, 0xFF8B=>0x30D2, 0xFF8C=>0x30D5, 0xFF8D=>0x30D8, 0xFF8E=>0x30DB, 0xFF8F=>0x30DE, 0xFF90=>0x30DF, 0xFF91=>0x30E0, 0xFF92=>0x30E1, 0xFF93=>0x30E2, 0xFF94=>0x30E3, 0xFF95=>0x30E5, 0xFF96=>0x30E7, 0xFF97=>0x30E9, 0xFF98=>0x30EA, 0xFF99=>0x30EB, 0xFF9A=>0x30EC, 0xFF9B=>0x30ED, 0xFF9C=>0x30EF, 0xFF9D=>0x30F3, 0xFFA0=>0x3164, 0xFFA1=>0x3131, 0xFFA2=>0x3132, 0xFFA3=>0x3133, 0xFFA4=>0x3134, 0xFFA5=>0x3135, 0xFFA6=>0x3136, 0xFFA7=>0x3137, 0xFFA8=>0x3138, 0xFFA9=>0x3139, 0xFFAA=>0x313A, 0xFFAB=>0x313B, 0xFFAC=>0x313C, 0xFFAD=>0x313D, 0xFFAE=>0x313E, 0xFFAF=>0x313F, 0xFFB0=>0x3140, 0xFFB1=>0x3141, 0xFFB2=>0x3142, 0xFFB3=>0x3143, 0xFFB4=>0x3144, 0xFFB5=>0x3145, 0xFFB6=>0x3146, 0xFFB7=>0x3147, 0xFFB8=>0x3148, 0xFFB9=>0x3149, 0xFFBA=>0x314A, 0xFFBB=>0x314B, 0xFFBC=>0x314C, 0xFFBD=>0x314D, 0xFFBE=>0x314E, 0xFFC2=>0x314F, 0xFFC3=>0x3150, 0xFFC4=>0x3151, 0xFFC5=>0x3152, 0xFFC6=>0x3153, 0xFFC7=>0x3154, 0xFFCA=>0x3155, 0xFFCB=>0x3156, 0xFFCC=>0x3157, 0xFFCD=>0x3158, 0xFFCE=>0x3159, 0xFFCF=>0x315A, 0xFFD2=>0x315B, 0xFFD3=>0x315C, 0xFFD4=>0x315D, 0xFFD5=>0x315E, 0xFFD6=>0x315F, 0xFFD7=>0x3160, 0xFFDA=>0x3161, 0xFFDB=>0x3162, 0xFFDC=>0x3163, 0x3131=>0x1100, 0x3132=>0x1101, 0x3133=>0x11AA, 0x3134=>0x1102, 0x3135=>0x11AC, 0x3136=>0x11AD, 0x3137=>0x1103, 0x3138=>0x1104, 0x3139=>0x1105, 0x313A=>0x11B0, 0x313B=>0x11B1, 0x313C=>0x11B2, 0x313D=>0x11B3, 0x313E=>0x11B4, 0x313F=>0x11B5, 0x3140=>0x111A, 0x3141=>0x1106, 0x3142=>0x1107, 0x3143=>0x1108, 0x3144=>0x1121, 0x3145=>0x1109, 0x3146=>0x110A, 0x3147=>0x110B, 0x3148=>0x110C, 0x3149=>0x110D, 0x314A=>0x110E, 0x314B=>0x110F, 0x314C=>0x1110, 0x314D=>0x1111, 0x314E=>0x1112, 0x314F=>0x1161, 0x3150=>0x1162, 0x3151=>0x1163, 0x3152=>0x1164, 0x3153=>0x1165, 0x3154=>0x1166, 0x3155=>0x1167, 0x3156=>0x1168, 0x3157=>0x1169, 0x3158=>0x116A, 0x3159=>0x116B, 0x315A=>0x116C, 0x315B=>0x116D, 0x315C=>0x116E, 0x315D=>0x116F, 0x315E=>0x1170, 0x315F=>0x1171, 0x3160=>0x1172, 0x3161=>0x1173, 0x3162=>0x1174, 0x3163=>0x1175, 0x3165=>0x1114, 0x3166=>0x1115, 0x3167=>0x11C7, 0x3168=>0x11C8, 0x3169=>0x11CC, 0x316A=>0x11CE, 0x316B=>0x11D3, 0x316C=>0x11D7, 0x316D=>0x11D9, 0x316E=>0x111C, 0x316F=>0x11DD, 0x3170=>0x11DF, 0x3171=>0x111D, 0x3172=>0x111E, 0x3173=>0x1120, 0x3174=>0x1122, 0x3175=>0x1123, 0x3176=>0x1127, 0x3177=>0x1129, 0x3178=>0x112B, 0x3179=>0x112C, 0x317A=>0x112D, 0x317B=>0x112E, 0x317C=>0x112F, 0x317D=>0x1132, 0x317E=>0x1136, 0x317F=>0x1140, 0x3180=>0x1147, 0x3181=>0x114C, 0x3182=>0x11F1, 0x3183=>0x11F2, 0x3184=>0x1157, 0x3185=>0x1158, 0x3186=>0x1159, 0x3187=>0x1184, 0x3188=>0x1185, 0x3189=>0x1188, 0x318A=>0x1191, 0x318B=>0x1192, 0x318C=>0x1194, 0x318D=>0x119E, 0x318E=>0x11A1, 0xA490=>0xA408, 0xA491=>0xA1B9, 0x0386=>0x03B1, 0x0388=>0x03B5, 0x0389=>0x03B7, 0x038A=>0x03B9, 0x038C=>0x03BF, 0x038E=>0x03C5, 0x038F=>0x03C9, 0x0390=>0x03B9, 0x03AA=>0x03B9, 0x03AB=>0x03C5, 0x03AC=>0x03B1, 0x03AD=>0x03B5, 0x03AE=>0x03B7, 0x03AF=>0x03B9, 0x03B0=>0x03C5, 0x03CA=>0x03B9, 0x03CB=>0x03C5, 0x03CC=>0x03BF, 0x03CD=>0x03C5, 0x03CE=>0x03C9, 0x03D0=>0x03B2, 0x03D1=>0x03B8, 0x03D2=>0x03C5, 0x03D3=>0x03C5, 0x03D4=>0x03C5, 0x03D5=>0x03C6, 0x03D6=>0x03C0, 0x03D8=>0x03D9, 0x03DA=>0x03DB, 0x03DC=>0x03DD, 0x03DE=>0x03DF, 0x03E0=>0x03E1, 0x03E2=>0x03E3, 0x03E4=>0x03E5, 0x03E6=>0x03E7, 0x03E8=>0x03E9, 0x03EA=>0x03EB, 0x03EC=>0x03ED, 0x03EE=>0x03EF, 0x03F0=>0x03BA, 0x03F1=>0x03C1, 0x03F2=>0x03C3, 0x03F4=>0x03B8, 0x03F5=>0x03B5, 0x03F6=>0x03B5, 0x03F7=>0x03F8, 0x03F9=>0x03C3, 0x03FA=>0x03FB, 0x1F00=>0x03B1, 0x1F01=>0x03B1, 0x1F02=>0x03B1, 0x1F03=>0x03B1, 0x1F04=>0x03B1, 0x1F05=>0x03B1, 0x1F06=>0x03B1, 0x1F07=>0x03B1, 0x1F08=>0x03B1, 0x1F09=>0x03B1, 0x1F0A=>0x03B1, 0x1F0B=>0x03B1, 0x1F0C=>0x03B1, 0x1F0D=>0x03B1, 0x1F0E=>0x03B1, 0x1F0F=>0x03B1, 0x1F10=>0x03B5, 0x1F11=>0x03B5, 0x1F12=>0x03B5, 0x1F13=>0x03B5, 0x1F14=>0x03B5, 0x1F15=>0x03B5, 0x1F18=>0x03B5, 0x1F19=>0x03B5, 0x1F1A=>0x03B5, 0x1F1B=>0x03B5, 0x1F1C=>0x03B5, 0x1F1D=>0x03B5, 0x1F20=>0x03B7, 0x1F21=>0x03B7, 0x1F22=>0x03B7, 0x1F23=>0x03B7, 0x1F24=>0x03B7, 0x1F25=>0x03B7, 0x1F26=>0x03B7, 0x1F27=>0x03B7, 0x1F28=>0x03B7, 0x1F29=>0x03B7, 0x1F2A=>0x03B7, 0x1F2B=>0x03B7, 0x1F2C=>0x03B7, 0x1F2D=>0x03B7, 0x1F2E=>0x03B7, 0x1F2F=>0x03B7, 0x1F30=>0x03B9, 0x1F31=>0x03B9, 0x1F32=>0x03B9, 0x1F33=>0x03B9, 0x1F34=>0x03B9, 0x1F35=>0x03B9, 0x1F36=>0x03B9, 0x1F37=>0x03B9, 0x1F38=>0x03B9, 0x1F39=>0x03B9, 0x1F3A=>0x03B9, 0x1F3B=>0x03B9, 0x1F3C=>0x03B9, 0x1F3D=>0x03B9, 0x1F3E=>0x03B9, 0x1F3F=>0x03B9, 0x1F40=>0x03BF, 0x1F41=>0x03BF, 0x1F42=>0x03BF, 0x1F43=>0x03BF, 0x1F44=>0x03BF, 0x1F45=>0x03BF, 0x1F48=>0x03BF, 0x1F49=>0x03BF, 0x1F4A=>0x03BF, 0x1F4B=>0x03BF, 0x1F4C=>0x03BF, 0x1F4D=>0x03BF, 0x1F50=>0x03C5, 0x1F51=>0x03C5, 0x1F52=>0x03C5, 0x1F53=>0x03C5, 0x1F54=>0x03C5, 0x1F55=>0x03C5, 0x1F56=>0x03C5, 0x1F57=>0x03C5, 0x1F59=>0x03C5, 0x1F5B=>0x03C5, 0x1F5D=>0x03C5, 0x1F5F=>0x03C5, 0x1F60=>0x03C9, 0x1F61=>0x03C9, 0x1F62=>0x03C9, 0x1F63=>0x03C9, 0x1F64=>0x03C9, 0x1F65=>0x03C9, 0x1F66=>0x03C9, 0x1F67=>0x03C9, 0x1F68=>0x03C9, 0x1F69=>0x03C9, 0x1F6A=>0x03C9, 0x1F6B=>0x03C9, 0x1F6C=>0x03C9, 0x1F6D=>0x03C9, 0x1F6E=>0x03C9, 0x1F6F=>0x03C9, 0x1F70=>0x03B1, 0x1F71=>0x03B1, 0x1F72=>0x03B5, 0x1F73=>0x03B5, 0x1F74=>0x03B7, 0x1F75=>0x03B7, 0x1F76=>0x03B9, 0x1F77=>0x03B9, 0x1F78=>0x03BF, 0x1F79=>0x03BF, 0x1F7A=>0x03C5, 0x1F7B=>0x03C5, 0x1F7C=>0x03C9, 0x1F7D=>0x03C9, 0x1F80=>0x03B1, 0x1F81=>0x03B1, 0x1F82=>0x03B1, 0x1F83=>0x03B1, 0x1F84=>0x03B1, 0x1F85=>0x03B1, 0x1F86=>0x03B1, 0x1F87=>0x03B1, 0x1F88=>0x03B1, 0x1F89=>0x03B1, 0x1F8A=>0x03B1, 0x1F8B=>0x03B1, 0x1F8C=>0x03B1, 0x1F8D=>0x03B1, 0x1F8E=>0x03B1, 0x1F8F=>0x03B1, 0x1F90=>0x03B7, 0x1F91=>0x03B7, 0x1F92=>0x03B7, 0x1F93=>0x03B7, 0x1F94=>0x03B7, 0x1F95=>0x03B7, 0x1F96=>0x03B7, 0x1F97=>0x03B7, 0x1F98=>0x03B7, 0x1F99=>0x03B7, 0x1F9A=>0x03B7, 0x1F9B=>0x03B7, 0x1F9C=>0x03B7, 0x1F9D=>0x03B7, 0x1F9E=>0x03B7, 0x1F9F=>0x03B7, 0x1FA0=>0x03C9, 0x1FA1=>0x03C9, 0x1FA2=>0x03C9, 0x1FA3=>0x03C9, 0x1FA4=>0x03C9, 0x1FA5=>0x03C9, 0x1FA6=>0x03C9, 0x1FA7=>0x03C9, 0x1FA8=>0x03C9, 0x1FA9=>0x03C9, 0x1FAA=>0x03C9, 0x1FAB=>0x03C9, 0x1FAC=>0x03C9, 0x1FAD=>0x03C9, 0x1FAE=>0x03C9, 0x1FAF=>0x03C9, 0x1FB0=>0x03B1, 0x1FB1=>0x03B1, 0x1FB2=>0x03B1, 0x1FB3=>0x03B1, 0x1FB4=>0x03B1, 0x1FB6=>0x03B1, 0x1FB7=>0x03B1, 0x1FB8=>0x03B1, 0x1FB9=>0x03B1, 0x1FBA=>0x03B1, 0x1FBB=>0x03B1, 0x1FBC=>0x03B1, 0x1FC2=>0x03B7, 0x1FC3=>0x03B7, 0x1FC4=>0x03B7, 0x1FC6=>0x03B7, 0x1FC7=>0x03B7, 0x1FC8=>0x03B5, 0x1FC9=>0x03B5, 0x1FCA=>0x03B7, 0x1FCB=>0x03B7, 0x1FCC=>0x03B7, 0x1FD0=>0x03B9, 0x1FD1=>0x03B9, 0x1FD2=>0x03B9, 0x1FD3=>0x03B9, 0x1FD6=>0x03B9, 0x1FD7=>0x03B9, 0x1FD8=>0x03B9, 0x1FD9=>0x03B9, 0x1FDA=>0x03B9, 0x1FDB=>0x03B9, 0x1FE0=>0x03C5, 0x1FE1=>0x03C5, 0x1FE2=>0x03C5, 0x1FE3=>0x03C5, 0x1FE4=>0x03C1, 0x1FE5=>0x03C1, 0x1FE6=>0x03C5, 0x1FE7=>0x03C5, 0x1FE8=>0x03C5, 0x1FE9=>0x03C5, 0x1FEA=>0x03C5, 0x1FEB=>0x03C5, 0x1FEC=>0x03C1, 0x1FF2=>0x03C9, 0x1FF3=>0x03C9, 0x1FF4=>0x03C9, 0x1FF6=>0x03C9, 0x1FF7=>0x03C9, 0x1FF8=>0x03BF, 0x1FF9=>0x03BF, 0x1FFA=>0x03C9, 0x1FFB=>0x03C9, 0x1FFC=>0x03C9);

        }

        $ret = "";
        $strlen = mb_strlen($text, "UTF-8");
        for ($i=0; $i<$strlen; $i++) {
            $char = mb_substr($text,$i,1, "UTF-8");
            $ord = ordUTF8($char);
            if (isset($this->repl[$ord])) {
                $rep = $this->repl[$ord];
                if (is_string($rep))
                    $ret .= $rep;
                else
                    $ret .= chrUTF8($rep);
            } else
                $ret .= $char;
        }
        return $ret;
    }


}
